import java.util.*;

public class day1 {
    /**
     * DP59 数位染色
     * https://www.nowcoder.com/practice/adf828f399de4932955734a4eac12757?tpId=230&tqId=38956&ru=/exam/oj
     */
    public static void main3(String[] args) {
        Scanner in = new Scanner(System.in);
        // 动态规划 --- 01背包
        // 选或者不选 来 凑成一个 体积
        char[] str = in.next().toCharArray();
        int n = str.length;
        int sum = 0;
        for(char ch : str) {
            sum += (ch - '0');
        }

        if(sum % 2 != 0) {
            System.out.println("No");
        }else {
            int half = sum / 2;
            // dp[i][j]表示: 从前i个
            boolean[][] dp = new boolean[n + 1][half + 1];
            dp[0][0] = true;
            for(int i = 1;i <= n;i++) {
                // 选或者不选，只需要满足其一即可。
                for(int j = 0;j <= half;j++) {
                    // 不选
                    dp[i][j] = dp[i - 1][j];
                    // 选，需要满足条件
                    if(j >= (str[i - 1] - '0')) {
                        dp[i][j] = dp[i][j] || dp[i - 1][j - (str[i - 1] - '0')];
                    }
                }
            }
            if(dp[n][half]) {
                System.out.println("Yes");
            }else {
                System.out.println("No");
            }
        }

    }




    /**
     * 春游
     * https://ac.nowcoder.com/acm/problem/219035
     */
    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        while(t-- != 0) {
            long n = in.nextLong();
            long a = in.nextLong();
            long b = in.nextLong();
            long ret = 0;
            if(n <= 2) {
                ret = Math.min(a,b);
            }else {
                // 判断一下相对来说哪个船是便宜的
                // 3个二人船 和 2个三人船 所乘坐的人数是一致的，但是需要取相对来说是值小的
                if(a * 3 <= b * 2) {
                    // 尽可能多的选择双人船
                    ret += (n / 2) * a;
                    // 去把乘船的人的个数去掉
                    n %= 2; // 把剩下的人的个数取出
                    if(n == 1) {
                        // 剩下一个人，看这个人是单独坐二人船合适还是取2人和这个剩下的人坐3人船合适
                        // 比如：a 10  b 15  n 5
                        // 先是2个二人船，剩下一个，看是单人坐二人还是和其余的2人坐三人
                        // 如果b-a 小于 a和b任何一个值，那么就坐三人船，在原来加上二人船的钱的基础上把缺的钱加上
                        // 也就是 二个二人船的价格 和 一个三人船的价格 谁小
                        ret += Math.min(Math.min(a,b),b - a);
                    }
                }else {
                    // 尽可能多的选择三人船
                    ret += (n / 3) * b;
                    n %= 3;
                    // 可能剩下的是二人或一个人
                    if(n == 1) {
                        // 和上面的思想一致，把最后一个三人船卸下看着三个人加上剩余的人，就是4人，分两个二人船
                        // 这 两个二人船 - 三人船的下个 是否比 a和b的最小值 便宜，如果便宜就用两个二人船
                        // 也就是 二个二人船的价格 和 一个二人船+一个三人船的价格 谁小
                        ret += Math.min(Math.min(a,b),2 * a - b);
                    }
                    if(n == 2) {
                        // 也就是 三个二人船的价格 和 一个二人船+一个三人船的价格 谁小
                        ret += Math.min(Math.min(a,b),3 * a - b);
                    }
                }
            }
            System.out.println(ret);
        }
    }



    /**
     * 小红的口罩
     * https://ac.nowcoder.com/acm/problem/229953
     */
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int k = in.nextInt();
        // 使用堆进行贪心计算，每次取出的都是最小的不舒适度这个值
        PriorityQueue<Integer> heap = new PriorityQueue<>();
        for(int i = 0;i < n;i++) {
            int a = in.nextInt();
            heap.add(a);
        }

        // 默认是小根堆，那么堆顶数数据就是最小值
        int sum = 0,count = 0;
        while(!heap.isEmpty()) {
            // 取出现在的最小值
            int a = heap.poll();
            sum += a;
            count++;
            // 放 舒适度进行翻倍的值
            heap.add(a * 2);
            if(sum > k) {
                // 说明超出舒适度了，那么只需要进行把最后一次所操作的次数减一即可
                System.out.println(count - 1);
                return;
            }
        }
    }
}
